Detecting primary hover point for multi-hover point device

ABSTRACT

Example apparatus and methods concern establishing, managing, or dis-establishing a primary hover-point for a hover-sensitive input/output interface. One example apparatus includes a proximity detector that detects an object in a hover-space associated with the input/output interface. The apparatus produces characterization data concerning the object. The characterization data may identify where the object is located, how the object is moving, what the object is doing, or other attributes of the object. The apparatus may assign a hover point designation to the object as a function of the characterization data. The apparatus selectively controls input actions associated with the object based on the hover point designation. The apparatus may accept input actions associated with a primary hover point and ignore actions associated with a non-primary hover point.

BACKGROUND

Touch sensitive screens have, in some apparatus, been replaced byhover-sensitive screens that rely on proximity detectors. While touchsensitive screens detected objects that touched the screen,hover-sensitive screens may detect objects that are within a certaindistance of the screen. A touch sensitive screen may have identified thepoints on the screen that were being touched by the user, user stylus,or other object. Actions could be controlled based on the touch pointsand the actions that occurred at the touch points.

Conventional hover-sensitive screens detect objects in a hover-spaceassociated with the hover-sensitive device. When there is a singleobject in the hover-space, conventional systems have had no difficultyassociating a primary hover-point to the single object. However, whenthere are multiple objects in the hover-space, or as objects enter, movearound in, and leave the hover-space, it may have been difficult, ifeven possible at all, to establish, maintain, and re-assign a primaryhover-point designation to the multiple moving objects. Reactingappropriately to user actions depends, at least in part, on correctlyidentifying the primary hover-point and then establishing, maintaining,and managing that primary hover-point designation.

SUMMARY

This Summary is provided to introduce, in a simplified form, a selectionof concepts that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

Example methods and apparatus are directed towards identifying a primaryhover point for a hover-sensitive screen. Example methods and apparatusmay detect a set of objects in a hover-space associated with ahover-sensitive input/output (i/o) interface and then associate aprimary hover point designation with a subset of the set of objects. Inone embodiment, a single primary hover-point may be established while inanother embodiment, a plurality of primary hover-points may beestablished. Example methods and apparatus may then associate anon-primary hover point designation with objects that are not designatedas being associated with a primary hover point. Actions performed by ani/o interface in response to user actions may then be determined, atleast in part, by whether the action was performed by an objectassociated with a primary hover point or by an object associated with anon-primary hover point.

Some embodiments may include a hover-sensitive i/o interface and aproximity detector that detects objects (e.g., finger, thumb, stylus) ina three dimensional volume (e.g., hover-space) associated with anapparatus. The hover-space may be disposed in proximity to the i/ointerface and in an area accessible to the proximity detector. Anembodiment may produce characterization data concerning the object. Anembodiment may selectively control the action performed on the i/ointerface as a function of the characterization data and as a functionof whether the characterization data is associated with an objectassociated with a primary hover point or with a non-primary hover point.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings illustrate various example apparatus, methods,and other embodiments described herein. It will be appreciated that theillustrated element boundaries (e.g., boxes, groups of boxes, or othershapes) in the figures represent one example of the boundaries. In someexamples, one element may be designed as multiple elements or multipleelements may be designed as one element. In some examples, an elementshown as an internal component of another element may be implemented asan external component and vice versa. Furthermore, elements may not bedrawn to scale.

FIG. 1 illustrates an example hover-sensitive device.

FIG. 2 illustrates an example hover-sensitive device.

FIG. 3 illustrates a portion of an example hover-sensitive device.

FIG. 4 illustrates a portion of an example hover-sensitive device.

FIG. 5 illustrates an example method associated with primary hover pointprocessing.

FIG. 6 illustrates an example method associated with a primary hoverpoint processing.

FIG. 7 illustrates an example cloud operating environment in whichprimary hover point control may be supported.

FIG. 8 is a system diagram depicting an exemplary mobile communicationdevice configured to support primary hover point processing.

FIG. 9 illustrates an example apparatus that performs primary hoverpoint processing.

DETAILED DESCRIPTION

Example apparatus and methods detect objects in a hover-space associatedwith an i/o interface. Example apparatus and methods then determinewhich, if any, of the objects will be identified as being associatedwith a primary hover point. Once an object(s) associated with a primaryhover point(s) is identified, i/o performed by the i/o interface will becontrolled, at least in part, by the relationship established betweenthe object and the primary hover point. In one embodiment, arelationship between a single object and a single primary hover pointmay be established. In this embodiment, inputs may only be received fromthe single object. In another embodiment, two or more objects may beidentified as being associated with two or more primary hover points. Inthis embodiment, inputs may be received from the two or more objectseither individually or in combination. Example apparatus and methods mayalso manage (e.g., change) and dis-establish (e.g., remove) associationsbetween objects and hover points. In one embodiment, once an object isassociated with a primary hover point that object will remain associatedwith the primary hover point until that object leaves the hover-space.In another embodiment, which object(s) is associated with a primaryhover point(s) may change over time based on actions taken by the objector by other objects. For example, another object may come closer to thei/o interface, another object may be more active in the hover-space,another object may make more identifiable gestures in the hover-space,another object may be positioned over a calibration point, or otheraction.

Hover technology is used to detect an object in a hover-space. “Hovertechnology” and “hover sensitive” refer to sensing an object spaced awayfrom (e.g., not touching) yet in close proximity to a display in anelectronic device. “Close proximity” may mean, for example, beyond 1 mmbut within 1 cm, beyond 0.1 mm but within 10 cm, or other combinationsof ranges. Being in close proximity includes being within a range wherea proximity detector can detect and characterize an object in thehover-space. The device may be, for example, a phone, a tablet computer,a computer, or other device. Hover technology may depend on a proximitydetector(s) associated with the device that is hover sensitive. Exampleapparatus may include the proximity detector(s).

FIG. 1 illustrates an example hover-sensitive device 100. Device 100includes an input/output (i/o) interface 110. I/O interface 100 is hoversensitive. I/O interface 100 may display a set of items including, forexample, a virtual keyboard 140 and, more generically, a user interfaceelement 120. User interface elements may be used to display informationand to receive user interactions. The user interactions may be performedin the hover-space 150 without touching the device 100. Device 100 ori/o interface 110 may store state 130 about the user interface element120, the virtual keyboard 140, or other items that are displayed. Thestate 130 of the user interface element 120 may depend on an actionperformed using virtual keyboard 140. The state 130 may include, forexample, the location of an object designated as being associated with aprimary hover point, the location of an object designated as beingassociated with a non-primary hover point, or other information. Whichuser interactions are performed may depend, at least in part, on whichobject in the hover-space is considered to be the primary hover-point.For example, an object associated with the primary hover point may makea gesture. At the same time, an object associated with a non-primaryhover point may also appear to make a gesture. Conventionally, it mayhave been difficult, if even possible at all, to decide which i/ooperation to perform when presented with simultaneous gestures. Exampleapparatus and methods may decide on which i/o operation to performbased, at least in part, on the primary/non-primary designations.

The device 100 may include a proximity detector that detects when anobject (e.g., digit, pencil, stylus with capacitive tip) is close to butnot touching the i/o interface 110. The proximity detector may identifythe location (x, y, z) of an object 160 in the three-dimensionalhover-space 150. The proximity detector may also identify otherattributes of the object 160 including, for example, the speed withwhich the object 160 is moving in the hover-space 150, the orientation(e.g., pitch, roll, yaw) of the object 160 with respect to thehover-space 150, the direction in which the object 160 is moving withrespect to the hover-space 150 or device 100, a gesture being made bythe object 160, or other attributes of the object 160. While a singleobject 160 is illustrated, the proximity detector may detect more thanone object in the hover-space 150.

In one embodiment, when there is more than one object in the hover-space150, example apparatus and methods may designate one of the objects asbeing associated with a primary hover-point and may relegate the otherobjects to being associated with secondary or non-primary hover-points.In another embodiment, when there is more than one object in thehover-space, example apparatus and methods may designate a subset of theobjects as being associated with primary hover-points and may designatethe objects that are not in the subset as being associated withsecondary or non-primary hover-points. Example apparatus and methods maythen decide what input action to take based, at least in part, on theprimary/non-primary designations. Additionally, example apparatus andmethods may decide what output action to take based, at least in part,on the primary/non-primary designations.

In different examples, the proximity detector may use active or passivesystems. For example, the proximity detector may use sensingtechnologies including, but not limited to, capacitive, electric field,inductive, Hall effect, Reed effect, Eddy current, magneto resistive,optical shadow, optical visual light, optical infrared (IR), opticalcolor recognition, ultrasonic, acoustic emission, radar, heat, sonar,conductive, and resistive technologies. Active systems may include,among other systems, infrared or ultrasonic systems. Passive systems mayinclude, among other systems, capacitive or optical shadow systems. Inone embodiment, when the proximity detector uses capacitive technology,the detector may include a set of capacitive sensing nodes to detect acapacitance change in the hover-space 150. The capacitance change may becaused, for example, by a digit(s) (e.g., finger, thumb) or otherobject(s) (e.g., pen, capacitive stylus) that comes within the detectionrange of the capacitive sensing nodes. In another embodiment, when theproximity detector uses infrared light, the proximity detector maytransmit infrared light and detect reflections of that light from anobject within the detection range (e.g., in the hover-space 150) of theinfrared sensors. Similarly, when the proximity detector uses ultrasonicsound, the proximity detector may transmit a sound into the hover-space150 and then measure the echoes of the sounds. In another embodiment,when the proximity detector uses a photodetector, the proximity detectormay track changes in light intensity. Increases in intensity may revealthe removal of an object from the hover-space 150 while decreases inintensity may reveal the entry of an object into the hover-space 150.

In general, a proximity detector includes a set of proximity sensorsthat generate a set of sensing fields in the hover-space 150 associatedwith the i/o interface 110. The proximity detector generates a signalwhen an object is detected in the hover-space 150. In one embodiment, asingle sensing field may be employed. In other embodiments, two or moresensing fields may be employed. In one embodiment, a single technologymay be used to detect or characterize the object 160 in the hover-space150. In another embodiment, a combination of two or more technologiesmay be used to detect or characterize the object 160 in the hover-space150.

In one embodiment, characterizing the object includes receiving a signalfrom a detection system (e.g., proximity detector) provided by thedevice. The detection system may be an active detection system (e.g.,infrared, ultrasonic), a passive detection system (e.g., capacitive), ora combination of systems. The detection system may be incorporated intothe device or provided by the device.

Characterizing the object may also include other actions. For example,characterizing the object may include determining that an object (e.g.,digit, stylus) has entered the hover-space or has left the hover-space.Characterizing the object may also include identifying the presence ofan object at a pre-determined location in the hover-space. Thepre-determined location may be relative to the i/o interface or may berelative to the position of a particular user interface element. In oneembodiment, the user may control which object will be associated withthe primary hover point by placing the object over a pre-determined“define primary hover point here” user interface element or by making an“I am the object to associate with the primary hover point” gesture.

FIG. 2 illustrates a simulated hover-sensitive device 200. The indexfinger 210 of a user has been designated as being associated with aprimary hover point. Therefore, actions taken by the index finger 210cause i/o activity on the hover-sensitive device 200. For example,hovering finger 210 over a certain key on a virtual keyboard may causethat key to become highlighted. Then, making a simulated typing action(e.g., virtual key press) over the highlighted key may cause an inputaction that causes a certain keystroke to appear in a text input box.For example, the letter E may be placed in a text input box.Unfortunately, conventional systems may have difficulty when thumb 220or wrist 230 are also present in the hover-space. For example, if thumb220 was closer to the i/o interface or was the first item to enter thehover-space, then thumb 220 might inadvertently be associated with theprimary hover point instead of finger 210. Similarly, if wrist 230 wascloser to the i/o interface or was the first item to enter thehover-space, then wrist 230 may be associated with the primary hoverpoint instead of finger 210. Example apparatus and methods facilitateidentifying an appropriate object to associate with a primary hoverpoint. Example apparatus and methods also facilitate managing therelationship between an object and a primary hover point.Conventionally, finger 210 may initially have been designated as beingassociated with the primary hover point but the appearance or action ofthumb 220 may have caused inadvertent and undesired toggling of theprimary hover point.

FIG. 3 illustrates a hover sensitive i/o interface 300. Line 320represents the outer limit of the hover-space associated with hoversensitive i/o interface 300. Line 320 is positioned at a distance 330from i/o interface 300. Distance 330 and thus line 320 may havedifferent dimensions and positions for different apparatus depending,for example, on the proximity detection technology used by a device thatsupports i/o interface 300.

Example apparatus and methods may identify objects located in thehover-space bounded by i/o interface 300 and line 320. At a first timeT1, an object 310 may be detectable in the hover-space and an object 312may not be detectable in the hover-space. At a second time T2, object312 may enter the hover-space and may actually come closer to the i/ointerface 300 than object 310. Example apparatus and methods facilitateestablishing a relationship between an object and a primary hover pointdesignation or between an object and a non-primary hover pointdesignation. In one embodiment, since object 310 was the first object toenter the hover-space, object 310 may be related to the primary hoverpoint and object 312 may be relegated to a non-primary hover point. Inanother embodiment, since object 312 comes closer to i/o interface 300,object 310 may lose the relationship with the primary hover point andobject 312 may acquire the relationship. But in another embodiment, justbecause object 312 comes closer to i/o interface 300 may not allowobject 312 to supplant the relationship between object 310 and theprimary hover point.

Different users may have different desires concerning how the first-inversus closest relationship should be handled. Thus, in one embodiment,example apparatus and methods may provide an application programminginterface (API) through which a user, program, process, or other actormay configure or reconfigure i/o interface 300. Thus, one user may optfor the first-in approach while another user may opt for the closestapproach. In one embodiment, the configuration may be performed usinglogic in the device supporting i/o interface 300 while in anotherembodiment the configuration may be performed off the device.

FIG. 4 illustrates a hover sensitive i/o interface 400. Line 420 depictsthe limits of a hover-space associated with i/o interface 400. Line 420is positioned at a distance 430 from the i/o interface 400. Thehover-space may be present between the i/o interface 400 and line 420.While a straight line is illustrated, the hover-space may vary in sizeand shape. There are four objects in the hover-space. Object 410 mayhave been the first object to enter the hover-space. Object 414 may bethe closest to the i/o interface 400. Object 416 may be positioned overa calibration point 490. Object 412 may have been in the hover-space forthe longest period of time, may also have been the most active object inthe hover-space, or may have made an identifiable gesture in thehover-space. Object 412 may also have an identifiable characteristic(e.g., fingerprint, radio frequency identification (RFID) tag, bar code,quick response (QR) code). Example apparatus and methods facilitateflexibly defining how an apparatus should identify which object orobjects are to be associated with a primary hover point and which objector objects are to be associated with a non-primary hover point. Onceobjects have been related to either primary hover points or non-primaryhover points, then inputs can be determined based, at least in part, onthe relations. Similarly, the outputs presented by the i/o interface 400may be controlled, at least in part, by the relations. Since differentusers may have different preferences, i/o interface 400 may beconfigurable with respect to how an object is to be identified as beingassociated with a primary hover point and how an object is to beidentified as being associated with a non-primary hover point.

Some portions of the detailed descriptions that follow are presented interms of algorithms and symbolic representations of operations on databits within a memory. These algorithmic descriptions and representationsare used by those skilled in the art to convey the substance of theirwork to others. An algorithm is considered to be a sequence ofoperations that produce a result. The operations may include creatingand manipulating physical quantities that may take the form ofelectronic values. Creating or manipulating a physical quantity in theform of an electronic value produces a concrete, tangible, useful,real-world result.

It has proven convenient at times, principally for reasons of commonusage, to refer to these signals as bits, values, elements, symbols,characters, terms, numbers, and other terms. It should be borne in mind,however, that these and similar terms are to be associated with theappropriate physical quantities and are merely convenient labels appliedto these quantities. Unless specifically stated otherwise, it isappreciated that throughout the description, terms including processing,computing, and determining, refer to actions and processes of a computersystem, logic, processor, or similar electronic device that manipulatesand transforms data represented as physical quantities (e.g., electronicvalues).

Example methods may be better appreciated with reference to flowdiagrams. For simplicity, the illustrated methodologies are shown anddescribed as a series of blocks. However, the methodologies may not belimited by the order of the blocks because, in some embodiments, theblocks may occur in different orders than shown and described. Moreover,fewer than all the illustrated blocks may be required to implement anexample methodology. Blocks may be combined or separated into multiplecomponents. Furthermore, additional or alternative methodologies canemploy additional, not illustrated blocks.

FIG. 5 illustrates an example method 500 associated with primary hoverpoint processing. Method 500 includes, at 530, establishing a primaryhover point designation. In one embodiment, a single primary hover pointmay be designated for a single member of a set of objects. Members ofthe set of objects will be at least partially present in a hover-spaceassociated with an input/output interface associated with an apparatus.For example, a fingertip may be in a hover-space while the part of thefinger nearest the hand may not be in the hover space. Similarly, thetip of a stylus may be located in the hover space while the other end ofthe stylus is not. Establishing the designation may include, forexample, updating a value in a computer memory, sending a message to anapparatus, generating an interrupt that is handled by a processor,storing a value in a register, storing a value in a data store, or otheraction.

Method 500 may also include, at 540, establishing a non-primary hoverpoint designation for a second, different member of the set of objects.The non-primary hover point designation may be, for example, a secondarydesignation, a to-be-ignored designation, or other designation.

In one embodiment, method 500 may establish primary hover pointdesignations at 530 for a first subset of members of the set of objects.In this embodiment, method 500 may also establish non-primary hoverpoint designations at 540 for a second, different subset of member ofthe set of objects. The first subset and the second subset may bedisjoint.

The primary hover point may be established at 530 in different ways. Inone embodiment, establishing the primary hover point designation is afunction of which member of the set of objects entered the hover-spacefirst. In another embodiment, establishing the primary hover pointdesignation is a function of which member of the set of objects hasspent the longest amount of time in the hover-space. In otherembodiments, establishing the primary hover point designation is afunction of which member of the set of objects is closest to theinput/output interface or is a function of which member of the set ofobjects is positioned within a threshold distance of a calibration pointassociated with the input/output interface. In one embodiment,establishing the primary hover point designation is a function of whichmember of the set of objects makes a pre-determined gesture. The gesturemay be used to identify the object making the gesture as being intendedto be associated with the primary hover point. Consider that one digitmay be more mobile, agile, precise or diverse than other digits.Consider also that a stylus may be operated with more mobility, agility,precision or diversity than some digits. Therefore, performing a preciseor complicated gesture may be required to earn a primary hover pointdesignation. In this way, a certain digit or stylus may be able toperform the gesture while the base of the thumb or the wrist may not beable to perform the gesture. In one embodiment, establishing the primaryhover point designation is a function of which member of the set ofobjects exhibits an identifying characteristic. For example, a fingermay exhibit a pre-determined fingerprint, a stylus may present an RFIDtag, a pencil may display a bar code, or an optical pencil may present aQR code. A user may habitually interact with a device using a certaindigit or implement (e.g., stylus). Thus, method 500 may establish theprimary hover point designation at 530 in response to detecting theobject that has most habitually been associated with the primary hoverpoint.

In one embodiment, non-primary hover point designations may beestablished at 540 using similar approaches to those used to establishprimary hover point designations at 530. In one embodiment, primary ornon-primary designations may be established as a function of one or moreof the actions or attributes described in connection with action 530.

Method 500 may also include, at 550, selectively controlling how theinput/output interface processes actions performed by members of the setof objects. The control may be exercised based, at least in part, on theprimary hover point designation and the non-primary hover pointdesignation. In one embodiment, selectively controlling at 550 how theinput/output interface processes actions includes accepting inputs fromthe first member and rejecting inputs from the second member. In anotherembodiment, selectively controlling at 550 how the input/outputinterface processes actions comprises accepting inputs from the firstmember before accepting inputs from the second member. In oneembodiment, how the input/output interface processes actions may be userconfigurable.

FIG. 6 illustrates an example method 600 that is similar to method 500(FIG. 5). For example, method 600 includes establishing a primary hoverpoint designation(s) at 630, establishing a non-primary designation(s)at 640, and controlling input processing at 640. However, method 600also includes additional actions.

Method 600 also includes, at 620, detecting the set of objects in thehover-space. The objects may be detected in response to receiving asignal from a detection system provided by the apparatus for which hoverpoint processing is being performed. The detection system may be, forexample, an active detection system or a passive detection system.Detecting the objects and characterizing the objects may be an ongoingprocess.

Conventionally, the appearance, operation, and other attributes of userinterface elements may have been configurable through on-screenconfiguration. However, user interface elements or gestures used todefine an object as being associated with the primary hover point maynot have been configurable. The configuration that was possible, if any,may have occurred through user interaction with the element and notthrough programmatic control. Example apparatus and methods provide amore configurable and extensible approach to configuration. To supportthis configurability, method 600 may include, at 610, receiving aninbound message. The message may be received, for example, through anapplication programming interface (API) provided by a process running onthe device. In different embodiments the inbound message may also bereceived using other message passing approaches including, for example,sockets, remote procedure calls, interrupts, or shared memory. Theinbound message may include configuration information that controls howan apparatus will determine which object or objects to associate with aprimary hover point or points and which object or objects to associatewith a non-primary hover point or points.

Method 600 may, as a function of receiving the inbound message,selectively reconfigure how a primary hover point designation isestablished at 630 or selectively reconfigure how a non-primary hoverpoint designation is established at 640.

A user may interact with a hover-sensitive screen in different ways atdifferent times. For example, at a first time a user may be using atexting application, at a second time a user may be editing aphotograph, and at a third time a user may be handling their email.Different applications may have different types of interfaces with whicha user may interact in different ways. A user may interact with theirtext application with their index finger, may interact with their emailapplication with their thumbs, and may interact with the photographyapplication with a stylus. Therefore method 600 also includes, at 660,removing the primary hover point designation for the first member and,at 670, establishing the primary hover point designation for a differentmember of the set of objects. While changing designations may be desiredfor different applications, the changing may occur as the result of auser action. For example, removing the primary hover point designationmay be a function of the first member leaving the hover-space or thefirst member making a second pre-determined gesture. While the firstpre-determined gesture may have indicated that an object wanted toreceive the primary hover point designation, the second pre-determinedgesture may indicate that the object wants to relinquish the primaryhover point designation. Establishing the primary hover pointdesignation for the different member may be a function of the differentmember entering the hover-space, the different member being closer tothe input/output interface than any other member of the set of objects,the different member making the first pre-determined gesture, or thedifferent member being positioned within a threshold distance of thecalibration point.

While FIGS. 5 and 6 illustrate various actions occurring in serial, itis to be appreciated that various actions illustrated in FIGS. 5 and 6could occur substantially in parallel. By way of illustration, a firstprocess could identify objects, a second process could manage object toprimary hover point relationships, and a third process could manageobject to non-primary hover point relationships. While three processesare described, it is to be appreciated that a greater or lesser numberof processes could be employed and that lightweight processes, regularprocesses, threads, and other approaches could be employed.

In one example, a method may be implemented as computer executableinstructions. Thus, in one example, a computer-readable storage mediummay store computer executable instructions that if executed by a machine(e.g., computer) cause the machine to perform methods described orclaimed herein including methods 500 or 600. While executableinstructions associated with the listed methods are described as beingstored on a computer-readable storage medium, it is to be appreciatedthat executable instructions associated with other example methodsdescribed or claimed herein may also be stored on a computer-readablestorage medium. In different embodiments, the example methods describedherein may be triggered in different ways. In one embodiment, a methodmay be triggered manually by a user. In another example, a method may betriggered automatically.

FIG. 7 illustrates an example cloud operating environment 700. A cloudoperating environment 700 supports delivering computing, processing,storage, data management, applications, and other functionality as anabstract service rather than as a standalone product. Services may beprovided by virtual servers that may be implemented as one or moreprocesses on one or more computing devices. In some embodiments,processes may migrate between servers without disrupting the cloudservice. In the cloud, shared resources (e.g., computing, storage) maybe provided to computers including servers, clients, and mobile devicesover a network. Different networks (e.g., Ethernet, Wi-Fi, 802.x,cellular) may be used to access cloud services. Users interacting withthe cloud may not need to know the particulars (e.g., location, name,server, database) of a device that is actually providing the service(e.g., computing, storage). Users may access cloud services via, forexample, a web browser, a thin client, a mobile application, or in otherways.

FIG. 7 illustrates an example primary hover-point service 760 residingin the cloud. The primary hover-point service 760 may rely on a server702 or service 704 to perform processing and may rely on a data store706 or database 708 to store data. While a single server 702, a singleservice 704, a single data store 706, and a single database 708 areillustrated, multiple instances of servers, services, data stores, anddatabases may reside in the cloud and may, therefore, be used by theprimary hover point service 760.

FIG. 7 illustrates various devices accessing the primary hover-pointservice 760 in the cloud. The devices include a computer 710, a tablet720, a laptop computer 730, a personal digital assistant 740, and amobile device (e.g., cellular phone, satellite phone) 750. It ispossible that different users at different locations using differentdevices may access the primary hover-point service 760 through differentnetworks or interfaces. In one example, the primary hover-point service760 may be accessed by a mobile device 750. In another example, portionsof primary hover-point service 760 may reside on a mobile device 750.Primary hover-point service 760 may perform actions including, forexample, configuring primary hover point identification for a device,performing primary hover point detection for a device, managing primaryhover point designations for a device, or other action. In oneembodiment, primary hover-point service 760 may perform portions ofmethods described herein (e.g., method 500, method 600).

FIG. 8 is a system diagram depicting an exemplary mobile device 800 thatincludes a variety of optional hardware and software components, showngenerally at 802. Components 802 in the mobile device 800 cancommunicate with other components, although not all connections areshown for ease of illustration. The mobile device 800 may be a varietyof computing devices (e.g., cell phone, smartphone, handheld computer,Personal Digital Assistant (PDA), etc.) and may allow wireless two-waycommunications with one or more mobile communications networks 804, suchas a cellular or satellite networks.

Mobile device 800 can include a controller or processor 810 (e.g.,signal processor, microprocessor, application specific integratedcircuit (ASIC), or other control and processing logic circuitry) forperforming tasks including signal coding, data processing, input/outputprocessing, power control, or other functions. An operating system 812can control the allocation and usage of the components 802 and supportapplication programs 814. The application programs 814 can includemobile computing applications (e.g., email applications, calendars,contact managers, web browsers, messaging applications), or othercomputing applications.

Mobile device 800 can include memory 820. Memory 820 can includenon-removable memory 822 or removable memory 824. The non-removablememory 822 can include random access memory (RAM), read only memory(ROM), flash memory, a hard disk, or other memory storage technologies.The removable memory 824 can include flash memory or a SubscriberIdentity Module (SIM) card, which is known in GSM communication systems,or other memory storage technologies, such as “smart cards.” The memory820 can be used for storing data or code for running the operatingsystem 812 and the applications 814. Example data can include object toprimary hover point relationship data, object to non-primary hover pointrelationship data, hover point establishment configuration data, userinterface element state, web pages, text, images, sound files, videodata, or other data sets to be sent to or received from one or morenetwork servers or other devices via one or more wired or wirelessnetworks. The memory 820 can store a subscriber identifier, such as anInternational Mobile Subscriber Identity (IMSI), and an equipmentidentifier, such as an International Mobile Equipment Identifier (IMEI).The identifiers can be transmitted to a network server to identify usersor equipment.

The mobile device 800 can support one or more input devices 830including, but not limited to, a touchscreen 832, a hover screen 833, amicrophone 834, a camera 836, a physical keyboard 838, or trackball 840.While a touch screen 832 and a physical keyboard 838 are described, inone embodiment a screen may be hover-sensitive and may display a virtualkeyboard. The mobile device 800 may also support output devices 850including, but not limited to, a speaker 852 and a display 854. Otherpossible input devices (not shown) include accelerometers (e.g., onedimensional, two dimensional, three dimensional). Other possible outputdevices (not shown) can include piezoelectric or other haptic outputdevices. Some devices can serve more than one input/output function. Forexample, touchscreen 832 and display 854 can be combined in a singleinput/output device. The input devices 830 can include a Natural UserInterface (NUI). An NUI is an interface technology that enables a userto interact with a device in a “natural” manner, free from artificialconstraints imposed by input devices such as mice, keyboards, remotecontrols, and others. Examples of NUI methods include those relying onspeech recognition, touch and stylus recognition, gesture recognition(both on screen and adjacent to the screen), air gestures, head and eyetracking, voice and speech, vision, touch, gestures, and machineintelligence. Other examples of a NUI include motion gesture detectionusing accelerometers/gyroscopes, facial recognition, three dimensional(3D) displays, head, eye, and gaze tracking, immersive augmented realityand virtual reality systems, all of which provide a more naturalinterface, as well as technologies for sensing brain activity usingelectric field sensing electrodes (electro-encephalogram (EEG) andrelated methods). Thus, in one specific example, the operating system812 or applications 814 can comprise speech-recognition software as partof a voice user interface that allows a user to operate the device 800via voice commands. Further, the device 800 can include input devicesand software that allow for user interaction via a user's spatialgestures, such as detecting and interpreting gestures to provide inputto an application.

A wireless modem 860 can be coupled to an antenna 891. In some examples,radio frequency (RF) filters are used and the processor 810 need notselect an antenna configuration for a selected frequency band. Thewireless modem 860 can support two-way communications between theprocessor 810 and external devices. The modem 860 is shown genericallyand can include a cellular modem for communicating with the mobilecommunication network 804 and/or other radio-based modems (e.g.,Bluetooth 864 or Wi-Fi 862). The wireless modem 860 may be configuredfor communication with one or more cellular networks, such as a Globalsystem for mobile communications (GSM) network for data and voicecommunications within a single cellular network, between cellularnetworks, or between the mobile device and a public switched telephonenetwork (PSTN). Mobile device 800 may also communicate locally using,for example, near field communication (NFC) element 892.

The mobile device 800 may include at least one input/output port 880, apower supply 882, a satellite navigation system receiver 884, such as aGlobal Positioning System (GPS) receiver, an accelerometer 886, or aphysical connector 890, which can be a Universal Serial Bus (USB) port,IEEE 1394 (FireWire) port, RS-232 port, or other port. The illustratedcomponents 802 are not required or all-inclusive, as other componentscan be deleted or added.

Mobile device 800 may include a primary hover-point logic 899 that isconfigured to provide a functionality for the mobile device 800. Forexample, primary hover-point logic 899 may provide a client forinteracting with a service (e.g., service 760, FIG. 7). Portions of theexample methods described herein may be performed by primary hover-pointlogic 899. Similarly, primary hover-point logic 899 may implementportions of apparatus described herein.

FIG. 9 illustrates an apparatus 900 that supports primary hover pointprocessing. In one example, the apparatus 900 includes an interface 940configured to connect a processor 910, a memory 920, a set of logics930, a proximity detector 960, and a hover sensitive i/o interface 950.Elements of the apparatus 900 may be configured to communicate with eachother, but not all connections have been shown for clarity ofillustration.

The proximity detector 960 may detect an object 980 in a hover-space 970associated with the apparatus 900. The proximity detector 960 may alsodetect another object 990 in the hover-space 970. The hover-space 970may be, for example, a three dimensional volume disposed in proximity tothe i/o interface 950 and in an area accessible to the proximitydetector 960. The hover-space 970 has finite bounds. Therefore theproximity detector 960 may not detect an object 999 that is positionedoutside the hover-space 970. A user may place a digit in the hover-space970, may place multiple digits in the hover-space 970, may place theirhand in the hover-space 970, may place an object (e.g., stylus) in thehover-space, may make a gesture in the hover-space 970, may remove adigit from the hover-space 970, or take other actions. Apparatus 900analyzes data associated with the objects in the hover-space 970,determines which object should be associated with a primary hover-space,and controls operation of the i/o interface 950 based, at least in part,on the relationship between an object and the primary hover point.

Apparatus 900 may include a first logic 932 that is configured toproduce characterization data concerning the object or objects that arepresent in the hover-space 970. In one embodiment, the characterizationdata may describe when the object 980 entered the hover-space 970.Knowing when an object entered the hover-space 970 supports a first-inor longest-in approach to associating an object with a primary hoverpoint. The characterization data may also describe where the object 980entered the hover-space 970 or where the object 980 is located in thehover-space 970. Knowing where an object entered the hover-space 970 orwhere the object is located in the hover-space supports a closest to thei/o interface approach or an “over the calibration point” approach toidentifying a primary hover point. The characterization data may alsodescribe a direction of travel of the object 980, a velocity of travelof the object 980 or a gesture performed by the object 980. Knowing howan object is moving supports identifying a gesture based or movementbased approach to identifying a primary hover point. Thecharacterization data may also describe an orientation of the object 980or a size of the object 980. Knowing the size or orientation of anobject supports an approach for identifying the primary hover point thatconsiders the size of an object (e.g., finger versus thumb) and whetherthe object is facing the i/o interface 950. The characterization datamay also describe an activity level of the object 980, an identifyingmark on or associated with the object 980, or other attribute. Thecharacterization data may also describe the object 990 or other objectsin the hover-space 970. The characterization data may depend on signalsprovided by the proximity detector 960 to the first logic 932. Apparatus900 may then either or both of object 980 or 990 as being associatedwith a primary hover point. Apparatus 900 may designate objects that arenot associated with a primary hover point as being associated with anon-primary hover point. The designations may be based, at least inpart, on the characterization data.

Apparatus 900 may include a second logic 934 that is configured toestablish and maintain a relationship between the object 980 and aprimary hover point for the input/output interface 950. Establishing therelationship may include, for example, updating a value in memory 920,sending a message to another apparatus, generating an interrupt that ishandled by processor 910, storing a value in a register, storing a valuein a data store, or other action. In one embodiment the relationship maybe stored as state data for the i/o interface 950. The relationship maybe based, at least in part, on the characterization data. Therelationship controls how the input/output interface 950 will interpretactions performed in the hover-space 970 by the object 980. For example,the relationship may control whether an action performed by object 980will be processed or ignored or whether an action performed by object990 will be processed or ignored.

In one embodiment, the hover point designation may be established for anobject that is the only object in the hover-space 970. In anotherembodiment, the hover point designation may be established for an objectthat was the first of a plurality of objects in the hover-space 970 toenter the hover-space 970. In another embodiment, the hover pointdesignation may be established for an object that has been in thehover-space longer than any other objects in the hover-space. In anotherembodiment, the hover point designation may be established for an objectthat is the closest object to the input/output interface in thehover-space 970. In another embodiment, the hover point designation maybe established for an object that has made a pre-determined gesture inthe hover space 970. For example, apparatus 900 may be configured torecognize an “I am the primary object” gesture. An object that performsthe “I am the primary object” gesture may receive the primary hoverpoint designation. In another embodiment, the hover point designationmay be established for an object that is positioned within a thresholddistance of a calibration point. For example, apparatus 900 may controli/o interface 950 to display a bulls-eye or other symbol over which auser can place the object that the user intends to be associated withthe primary hover point. In yet another embodiment, the hover pointdesignation may be established for an object that presents apre-determined identifier. For example, a user may habitually type witha certain finger or thumb. The finger or thumb may have a uniquefingerprint. When an object presenting the pre-determined fingerprint isin the hover-space 970, that object may receive the primary hover pointdesignation. Similarly, a user may habitually use a certain stylus witha capacitive tip. The stylus may be adorned with a QR code or mayinclude an RFID tag. When an object presenting the pre-determined QRcode or RFID tag is present, that object may receive the primary hoverpoint designation.

Apparatus 900 may include a third logic 936 that is configured tocontrol how the input/output interface 950 handles input actions fromthe object 980 as a function of the relationship. In one embodiment, thethird logic 936 is configured to control the input/output interface 950to selectively accept actions from the object as inputs when therelationship identifies the object as being associated with the primaryhover point. The third logic 936 may also be configured to control theinput/output interface 950 to selectively ignore actions from the objectwhen the relationship identifies the object as not being associated withthe primary hover point. The object designations may have beenestablished by the second logic 934 processing the characterization dataproduced by the first logic 932.

Apparatus 900 may also include a fourth logic 938 that is configured toreconfigure how the second logic 934 establishes the relationship. Inone embodiment, the fourth logic 938 reconfigures the second logic 934in response to a message received from a user or an application througha messaging interface. The message may describe, for example, how theuser would like to have an object be identified as being associated witha primary hover point or how a user would like to have an object beidentified as being associated with a non-primary hover point. In oneembodiment, a non-primary hover point may be a secondary hover point ora hover point that is to be ignored. By way of illustration, a user mayprovide configuration information to fourth logic 938. The informationmay identify that only a first finger having a first fingerprint, asecond finger having a second fingerprint, or a stylus having a uniquestylus property (e.g., RFID tag, QR code) are to be associated with aprimary hover point. The user may also provide configuration informationfor deciding between the three possible choices when two or more of thethree choices are present in the hover-space.

Apparatus 900 may include a memory 920. Memory 920 can includenon-removable memory or removable memory. Non-removable memory mayinclude random access memory (RAM), read only memory (ROM), flashmemory, a hard disk, or other memory storage technologies. Removablememory may include flash memory, or other memory storage technologies,such as “smart cards.” Memory 920 may be configured to store userinterface state information, characterization data, object data, orother data.

Apparatus 900 may include a processor 910. Processor 910 may be, forexample, a signal processor, a microprocessor, an application specificintegrated circuit (ASIC), or other control and processing logiccircuitry for performing tasks including signal coding, data processing,input/output processing, power control, or other functions. Processor910 may be configured to interact with logics 930 that establish andmanage primary hover-point associations and non-primary (e.g.,secondary, ignored) hover-point associations.

In one embodiment, the apparatus 900 may be a general purpose computerthat has been transformed into a special purpose computer through theinclusion of the set of logics 930. The set of logics 930 may beconfigured to perform input and output. Apparatus 900 may interact withother apparatus, processes, and services through, for example, acomputer network.

The following includes definitions of selected terms employed herein.The definitions include various examples or forms of components thatfall within the scope of a term and that may be used for implementation.The examples are not intended to be limiting. Both singular and pluralforms of terms may be within the definitions.

References to “one embodiment”, “an embodiment”, “one example”, and “anexample” indicate that the embodiment(s) or example(s) so described mayinclude a particular feature, structure, characteristic, property,element, or limitation, but that not every embodiment or examplenecessarily includes that particular feature, structure, characteristic,property, element or limitation. Furthermore, repeated use of the phrase“in one embodiment” does not necessarily refer to the same embodiment,though it may.

“Computer-readable storage medium”, as used herein, refers to a mediumthat stores instructions or data. “Computer-readable storage medium”does not refer to propagated signals. A computer-readable storage mediummay take forms, including, but not limited to, non-volatile media, andvolatile media. Non-volatile media may include, for example, opticaldisks, magnetic disks, tapes, and other media. Volatile media mayinclude, for example, semiconductor memories, dynamic memory, and othermedia. Common forms of a computer-readable storage medium may include,but are not limited to, a floppy disk, a flexible disk, a hard disk, amagnetic tape, other magnetic medium, an application specific integratedcircuit (ASIC), a compact disk (CD), a random access memory (RAM), aread only memory (ROM), a memory chip or card, a memory stick, and othermedia from which a computer, a processor or other electronic device canread.

“Data store”, as used herein, refers to a physical or logical entitythat can store data. A data store may be, for example, a database, atable, a file, a list, a queue, a heap, a memory, a register, and otherphysical repository. In different examples, a data store may reside inone logical or physical entity or may be distributed between two or morelogical or physical entities.

“Logic”, as used herein, includes but is not limited to hardware,firmware, software in execution on a machine, or combinations of each toperform a function(s) or an action(s), or to cause a function or actionfrom another logic, method, or system. Logic may include a softwarecontrolled microprocessor, a discrete logic (e.g., ASIC), an analogcircuit, a digital circuit, a programmed logic device, a memory devicecontaining instructions, and other physical devices. Logic may includeone or more gates, combinations of gates, or other circuit components.Where multiple logical logics are described, it may be possible toincorporate the multiple logical logics into one physical logic.Similarly, where a single logical logic is described, it may be possibleto distribute that single logical logic between multiple physicallogics.

To the extent that the term “includes” or “including” is employed in thedetailed description or the claims, it is intended to be inclusive in amanner similar to the term “comprising” as that term is interpreted whenemployed as a transitional word in a claim.

To the extent that the term “or” is employed in the detailed descriptionor claims (e.g., A or B) it is intended to mean “A or B or both”. Whenthe Applicant intends to indicate “only A or B but not both” then theterm “only A or B but not both” will be employed. Thus, use of the term“or” herein is the inclusive, and not the exclusive use. See, Bryan A.Garner, A Dictionary of Modern Legal Usage 624 (2d. Ed. 1995).

Although the subject matter has been described in language specific tostructural features or methodological acts, it is to be understood thatthe subject matter defined in the appended claims is not necessarilylimited to the specific features or acts described above. Rather, thespecific features and acts described above are disclosed as exampleforms of implementing the claims.

What is claimed is:
 1. A method, comprising: establishing a primaryhover point designation for a first member of a set of objects, wheremembers of the set of objects are at least partially present in ahover-space associated with an input/output interface associated with anapparatus, the first member being a finger of a user or an object heldin a hand of the user; while the members of the set of objects are atleast partially present in the hover-space, establishing non-primaryhover point designations for each member of the set of objects that isnot the primary hover point designation; and selectively controlling howthe input/output interface processes actions performed by members of theset of objects based, at least in part, on the primary hover pointdesignation and not the non-primary hover point designations.
 2. Themethod of claim 1, where establishing the primary hover pointdesignation is a function of which member of the set of objects enteredthe hover-space first.
 3. The method of claim 1, where establishing theprimary hover point designation is a function of which member of the setof objects has spent the longest amount of time in the hover-space. 4.The method of claim 1, where establishing the primary hover pointdesignation is a function of which member of the set of objects isclosest to the input/output interface.
 5. The method of claim 1, whereestablishing the primary hover point designation is a function of whichmember of the set of objects is positioned within a threshold distanceof a calibration point associated with the input/output interface. 6.The method of claim 1, where establishing the primary hover pointdesignation is a function of which member of the set of objects makes apre-determined gesture.
 7. The method of claim 1, where establishing theprimary hover point designation is a function of which member of the setof objects exhibits an identifying characteristic.
 8. The method ofclaim 1, where selectively controlling how the input/output interfaceprocesses actions comprises controlling the input/output interface toaccept inputs from the first member and to reject inputs from the secondmember.
 9. The method of claim 1, where selectively controlling how theinput/output interface processes actions comprises controlling theinput/output interface to accept inputs from the first member beforeaccepting inputs from the second member.
 10. The method of claim 1,comprising: wherein the primary hover point designation is a finger; andwherein the non-primary hover point designations are other fingers thatare not the finger with the primary hover point designation.
 11. Themethod of claim 1, comprising: removing the primary hover pointdesignation for the first member, and establishing the primary hoverpoint designation for a different member of the set of objects.
 12. Themethod of claim 11, where removing the primary hover point designationis a function of the first member leaving the hover-space or the firstmember making a second pre-determined gesture, and where establishingthe primary hover point designation for the different member is afunction of the different member entering the hover-space, the differentmember being closer to the input/output interface than any other memberof the set of objects, the different member making the pre-determinedgesture, or the different member being positioned within a thresholddistance of the calibration point.
 13. The method of claim 1, comprisingdetecting the set of objects in the hover-space in response to receivinga signal from an active detection system provided by the apparatus, orin response to receiving a signal from a passive detection systemprovided by the apparatus.
 14. The method of claim 1, comprising:receiving an inbound message through an application programminginterface (API) provided by a process running on the apparatus, and as afunction of the inbound message: selectively reconfiguring how theprimary hover point designation is established, or selectivelyreconfiguring how the non-primary hover point designations areestablished.
 15. A computer-readable storage medium storingcomputer-executable instructions that when executed by a computer causethe computer to perform a method, the method comprising: detecting a setof objects in a hover-space in response to receiving a signal from aproximity detection system associated with a hover sensitiveinput/output interface associated with an apparatus; establishing aprimary hover point designation for a first member of the set of objectsby updating a computer memory in the apparatus, where members of the setof objects are at least partially present in the hover-space, and whereestablishing the primary hover point designation is a function of whichmember of the set of objects entered the hover-space first, the firstmember being a finger of a user or an object held in a hand of the user;while the members of the set of objects are at least partially presentin the hover-space, establishing non-primary hover point designationsfor each member of the set of objects that is not the primary hoverpoint designation; selectively controlling how the input/outputinterface processes actions performed by members of the set of objectsbased, at least in part, on the primary hover point designation and notthe non-primary hover point designations, where selectively controllinghow the input/output interface processes actions comprises controllingthe input/output interface to accept inputs from the primary hover pointdesignation and to reject inputs from the non-primary hover pointdesignations; receiving an inbound message through an applicationprogramming interface (API) provided by a process running on theapparatus, and as a function of the inbound message: selectivelyreconfiguring how the primary hover point designation is established.16. An apparatus, comprising: a hover-sensitive input/output interface;a proximity detector configured to detect set of objects in ahover-space associated with the hover-sensitive input/output interface,wherein an object of the set of objects is a finger of a user or anobject held in a hand of the user; a first logic configured to producecharacterization data concerning the object, where the characterizationdata describes when the object entered the hover-space, where the objectentered the hover-space, where the object is located in the hover-space,a direction of travel of the object, a velocity of travel of the object,an orientation of the object, a size of the object, an activity level ofthe object, or an identifying mark associated with the object; and asecond logic configured to establish and maintain a relationship betweenthe object and a primary hover point designation given to the object forthe input/output interface and non-primary hover point designation givento a second object of the set of objects given while the set of objectsare in the hover-space based, at least in part, on the characterizationdata, where the relationship controls how the input/output interfacewill interpret actions performed in the hover-space by the object byselectively controlling how the input/output interface processes actionsperformed by the object based, at least in part, on the primary hoverpoint and not the non-primary hover point designation for the secondobject, where selectively controlling how the input/output interfaceprocesses actions comprises controlling the input/output interface toaccept inputs from the object and to reject inputs from the secondobject or any other object that is not the object.
 17. The apparatus ofclaim 16, where establishing the hover point is a function ofidentifying: whether the object was the first of a plurality of objectsin the hover-space to enter the hover-space, whether the object has beenin the hover-space longer than any other objects in the hover-space,whether the object is the closest object to the input/output interfacein the hover-space, whether the object has made a pre-determinedgesture, whether the object is positioned within a threshold distance ofa calibration point, or whether the object has a pre-determinedidentifier.
 18. The apparatus of claim 17, comprising a third logicconfigured to control how the input/output interface handles inputactions from the object as a function of the relationship.
 19. Theapparatus of claim 18, where the third logic is configured: to controlthe input/output interface to selectively accept input actions from theobject when the relationship identifies the object as being associatedwith the primary hover point, and to control the input/output interfaceto selectively ignore input actions from the object when therelationship identifies the object as no longer being associated withthe primary hover point.
 20. The apparatus of claim 19, comprising afourth logic that reconfigures how the second logic establishes therelationship, where the fourth logic reconfigures the second logic inresponse to a message received from a user or an application through amessaging interface.